Traitement des données avec Python

Nous allons déterminer la route pour aller de la machine source à la destination. La source est forcément l'un des deux ordinateurs portables. La destination peut être entrée avec la commande ping suivie d'une adresse IP ou d'un nom de domaine.

Soit le programme :

def est_ipv4(ad):
    # Permet de savoir si l'adresse ad est au format IPV4
    ad = ad.split('.')
    if len(ad) != 4:
        return False
    for a in ad:
        if not (0 <= int(a) <= 255):
            return False
    return True

def net_id(adresse, masque):
    # Renvoie l'adresse du réseau
    netid = [0]*4
    ad = adresse.split('.')
    ma = masque.split('.')
    for i in range(4):
        netid[i] = str(int(ad[i])&int(ma[i]))
    netid = '.'.join(netid)
    return netid

def host_id(adresse, masque):
    # Renvoie l'adresse de  la machine
    hostid = [0]*4
    ad = adresse.split('.')
    ma = masque.split('.')
    for i in range(4):
        hostid[i] = str(int(ad[i])&(256+~int(ma[i])))
    hostid = '.'.join(hostid)
    return hostid

# Pour les PC et serveurs
identifiants = {"172.16.100.10":"Portable 1", "172.16.100.12":"Portable 2",
                "172.16.100.2":"Serveur DNS", "213.186.33.19":"Serveur web Lycée",
                "217.70.184.56":"Serveur web Qwant", "194.4.208.20":"Serveur web fdj"}
# Serveur de nom de domaine
dns = {"www.qwant.fr":"217.70.184.56", "www.fdj.fr":"194.4.208.20",
       "www.monlycee.fr":"213.186.33.19"}
# Commutateur (switch)
table_ARP = {"172.16.100.10":"5D:4C:07:CD:C2:62", "172.16.100.12":"86:F7:BD:F0:1F:00",
             "172.16.100.2":"F3:43:84:E0:47:D0"}
# Routeurs
table_R1 = {"172.16.0.0":[None, "172.16.100.1"],
            "213.186.0.0":[None, "213.186.33.1"],
            "217.70.0.0":["192.168.0.1", "192.168.0.2"],
            "194.4.0.0":["192.168.0.1", "192.168.0.2"]}
table_R2 = {"172.16.0.0":["192.168.0.2", "192.168.0.1"],
            "213.186.0.0":["192.168.0.2", "192.168.0.1"],
            "217.70.0.0":[None, "217.70.184.1"],
            "194.4.0.0":[None, "194.4.208.1"]}

source = input("Votre adresse IP : ")

destination = input("ping ")


1. Complétez ce programme afin de conserver l'adresse IP destination ou de remplacer le nom de domaine par son adresse IP. On donne :

# On vérifie si adresse IPV4 ou nom de domaine

if not est_ipv4(..................................):

    destination = ............................................

print("La route pour aller vers ", destination)

source = identifiants.get(......................)

print("source : ", source)

print("\t--> Switch")


Si la destination est directement connectée au switch, la route est déterminée, sinon il faut aller vers le routeur R1. De la même manière, on détermine s'il faut aller vers le routeur R2 ou s'arrêter à R1.

2. Complétez le programme.

# L'adresse est-elle dans le sous-réseau local ?

if table_ARP.get(..........................) == None:

    print("\t--> ...............................")

    masque = "255.255.0.0"

    netid = net_id(.........................................)

    # L'adresse est-elle dans le réseau local ?

    if table_R1.get(netid)[0] != .....................:

        print("\t--> ...........................")

destination = ......................................

print("destination : ", destination)

Source : https://lesmanuelslibres.region-academique-idf.fr
Télécharger le manuel : https://forge.apps.education.fr/drane-ile-de-france/les-manuels-libres/snt-seconde ou directement le fichier ZIP
Sous réserve des droits de propriété intellectuelle de tiers, les contenus de ce site sont proposés dans le cadre du droit Français sous licence CC BY-NC-SA 4.0